﻿//#define  _CRT_SECURE_NO_WARNINGS 1
//#include <iostream>
//#include <map>
//using namespace std;
//typedef long long LL;
//int n, p;
//map<string, int> mp; // <⾼级词汇，含⾦量>
//// 判断 ch 是否合法
//bool check(char ch)
//{
//	if ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'z') || (ch >= 'A' &&
//		ch <= 'Z'))
//	{
//		return true;
//	}
//	else return false;
//}
//int main()
//{
//	cin >> n >> p;
//	for (int i = 1; i <= n; i++)
//	{
//		string s; int x;
//		cin >> s >> x;
//		mp[s] = x;
//	}
//	LL ret = 0;
//	char ch; // ⼀个字符⼀个字符读
//	string t = "";
//	while(scanf("%c",&ch)!=EOF)
//	{
//		if (check(ch)) t += ch;
//		else
//		{
//			// 读到分隔符
//			ret = (ret + mp[t]) % p;
//			t = "";
//		}
//	}
//	cout << ret << endl;
//	return 0;
//}

#include<iostream>
#include<unordered_map>
using namespace std;
int n, m;
unordered_map<int, int>mp;
int a[1000000];
int main()
{
	cin >> n>>m;
	while (n--)
	{
		for (int i = 1; i <= m; i++)
		{
			cin >> a[i];
		}

		int left = 1;int right = 1;
		int ret = 0;
		while (right <= m)
		{
			mp[a[right]]++;
			while(mp[a[right]]>1)
			{
				mp[a[left]]--;
				left++;
			}
			ret = max(ret, right - left - 1);
			right++;

		}
		cout << ret << endl;
	}

	return 0;
}